The leaky semicolon: compositional semantic dependencies for relaxed-memory concurrency
نویسندگان
چکیده
Program logics and semantics tell a pleasant story about sequential composition: when executing (S1;S2), we first execute S1 then S2. To improve performance, however, processors instructions out of order, compilers reorder programs even more dramatically. By design, single-threaded systems cannot observe these reorderings; multiple-threaded can, making the considerably less pleasant. A formal attempt to understand resulting mess is known as “relaxed memory model.” Prior models either fail address composition directly, or overly restrict compilers, permit nonsense thin-air behaviors which are unobservable in practice. support while targeting modern hardware, enrich standard event-based approach with preconditions families predicate transformers. When calculating meaning (S1; S2), transformer applied precondition an event e from S2 chosen based on set events upon depends. We apply this two existing models.
منابع مشابه
Compositional Verification of Relaxed-Memory Program Transformations
is paper is about verifying program transformations on an axiomatic relaxed memory model of the kind used in C/C++ and Java. Relaxed models present particular challenges for verifying program transformations, because they generate many additional modes of interaction between code and context. For a block of code being transformed, we dene a denotation from its behaviour in a set of representa...
متن کاملA CompCertTSO: A Verified Compiler for Relaxed-Memory Concurrency
In this paper, we consider the semantic design and verified compilation of a C-like programming language for concurrent shared-memory computation on x86 multiprocessors. The design of such a language is made surprisingly subtle by several factors: the relaxed-memory behavior of the hardware, the effects of compiler optimization on concurrent code, the need to support high-performance concurrent...
متن کاملCompositional Verification of Compiler Optimisations on Relaxed Memory
A valid compiler optimisation transforms a block in a program without introducing new observable behaviours to the program as a whole. Deciding which optimisations are valid can be difficult, and depends closely on the semantic model of the programming language. Axiomatic relaxed models, such as C++11, present particular challenges for determining validity, because such models allow subtle effe...
متن کاملQuasi-Linearizability: Relaxed Consistency for Improved Concurrency
Linearizability, the key correctness condition that most optimized concurrent object implementations comply with, imposes tight synchronization between the object concurrent operations. This tight synchronization usually comes with a performance and scalability price. Yet, these implementations are often employed in an environment where a more relaxed linearizability condition suffices, where s...
متن کاملUTCP: Compositional Semantics for Shared-Variable Concurrency
We present a Unifying Theories of Programming (UTP) semantics of shared variable concurrency that is fully compositional. Previous work was based on mapping such programs, using labelling of decision points and atomic actions, to action systems, which themselves were provided with a UTP semantics. The translation to action systems was largely compositional, but their dynamic semantics was based...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
ژورنال
عنوان ژورنال: Proceedings of the ACM on programming languages
سال: 2022
ISSN: ['2475-1421']
DOI: https://doi.org/10.1145/3498716